<?php

/**
 * Удаляет пользователя.
 *
 */
class User_Backend_Create_Delete extends Backend_Component_Delete
{
    
    /**
     * Реализация обработки пользовательского запроса.
     *
     */
    protected function _delete() 
    {
        $user_id = (int)Application::getRequest()->get('id');
        
        // помечаям пользователя как удаленного (сохраняем для истории)
        database::update('user_user', array('deleted' => 1), array('id' => $user_id));
        
        // удаляем его как субъекта безлпасности
        $query = '
            DELETE
                   `s_s`, `s_a` 
              FROM 
                   `user_user` `u_u` 
         LEFT JOIN 
                   `system_subject` `s_s` 
                ON 
                   `s_s`.`id` = `u_u`.`subject_id` 
         LEFT JOIN 
                   `system_admin` `s_a` 
                ON 
                   `s_a`.`subject_id` = `u_u`.`subject_id` 
             WHERE 
                   `u_u`.`id` = ' . $user_id;
        
        database::query($query);
        return database::affectedRows() > 0;
    }
    
    /**
    * @desc Запрещаем админу удаление самого себя.
    * 
    */
    protected function _allowed() 
    {
        if (Application::getRequest()->get('id') == User_Utils::getAdminUser_UserId()) {
            return false;
        }
        return true;
    }
    
}
